﻿using DapperExtensions.Mapper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NetDh.TestEntity
{
    [Serializable]
    public class TbUser : TbBase
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Remark { get; set; }
        public string Department { get; set; }
        //public string Department;//如果不设置成属性，则不会被生成sql
    }

    #region 如果需要自定义Map映射,可参考：
    public class TbUserMapper : ClassMapper<TbUser>
    {
        public TbUserMapper()
        {
            //1.use different table name
            Table("UserTable");//把实体类的数据库表名指定为UserTable

            //2.use a custom schema
            //Schema("not_dbo_schema");

            //3.have a custom primary key
            //KeyType.Assigned说明主键在数据库表无默认值（比如是非自增长的主键）
            //KeyType.Identity说明主键在数据库表有默认值（比如是自增长的主键）
            //Map(x => x.MainKey).Key(KeyType.Assigned);

            //4.Use a different name property from database column
            //Map(x => x.Remark).Column("Bar");//把实体类的Remark属性指定为数据库表Bar字段

            //5.Ignore this property entirely
            //Map(x => x.SecretDataMan).Ignore();//忽略实体类中的SecretDataMan字段，即它不是数据库表字段。

            //optional, map all other columns
            AutoMap();
        }
        //启动程序时，执行以下定义：
        //DapperExtensions.DapperExtensions.SetMappingAssemblies(new[] { typeof(TbUserMapper).Assembly });
        //当你有很多个Model类都有自定义Map时，而且这些自定Map都在同一个程序集，那么只要上面那一句就可以了。它会检索整个Assemble去查找出所有继承ClassMapper的类。

    }
    #endregion
}
